package com.ch10.demo2;

import java.util.Arrays;
import java.util.Iterator;

/**
 * @ClassName FilterChain
 * @Description 过滤链(管理所有过滤器的执行, 以及是否放行)
 * @Author Kx
 * @Date 2025/4/17 19:25
 * @Version 1.0
 */
public class FilterChain {
    /***
     * @author: kx
     * @date: 2025/4/17 19:27
     * @description: 定义一个迭代器, 用于遍历过滤器集合
    */
    private final Iterator<Filter> iterator;

    /*** 
     * @author: kx
     * @date: 2025/4/17 19:30
     * @description: 在构造方法中初始化所有的过滤器
    */
    public FilterChain() {
        iterator = Arrays.asList(new FilterA(),new FilterB(),new FilterC()).iterator();
    }

    /***
     * @author: kx
     * @date: 2025/4/17 19:31
     * @param request : 请求
     * @param response : 响应
     * @description: 放行方法
    */
    public void doFilter(ServletRequest request, ServletResponse response) {
        // 判断是否还有下一个过滤器
        if (iterator.hasNext()) {
            // 获取下一个过滤器
            Filter filter = iterator.next();
            // 执行过滤器
            filter.doFiler(request, response, this);
        }
    }
}
